#pragma once
#ifndef READER_H
#define READER_H

#include <string>
#include <iostream>
using namespace std;

class Reader {
private:
    string readerId;    // 读者号
    string name;        // 姓名
    string gender;      // 性别
    string type;        // 类型
    string phone;       // 联系方式
    int maxBorrowCount; // 最大借阅数量
    int currentBorrowCount; // 当前借阅数量
    bool isBlacklisted; // 是否在黑名单

public:
    // 构造函数
    Reader();
    Reader(string id, string n, string g, string t, string p);

    // Getter方法
    string getReaderId() const { return readerId; }
    string getName() const { return name; }
    string getGender() const { return gender; }
    string getType() const { return type; }
    string getPhone() const { return phone; }
    int getMaxBorrowCount() const { return maxBorrowCount; }
    int getCurrentBorrowCount() const { return currentBorrowCount; }
    bool getIsBlacklisted() const { return isBlacklisted; }

    // Setter方法
    void setName(string n) { name = n; }
    void setGender(string g) { gender = g; }
    void setType(string t) { type = t; }
    void setPhone(string p) { phone = p; }
    void setMaxBorrowCount(int count) { maxBorrowCount = count; }
    void setCurrentBorrowCount(int count) { currentBorrowCount = count; }
    void setIsBlacklisted(bool blacklisted) { isBlacklisted = blacklisted; }

    // 功能方法
    void displayInfo() const;
    string toString() const;
    static Reader fromString(const string& data);

    // 操作符重载
    bool operator==(const Reader& other) const {
        return readerId == other.readerId;
    }
};

#endif